home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / C++ AppleLink Messages / CPlus.Dev$ 2⁄2⁄90 / 0045-Code generation (lon-Feb90 next >
Encoding:
Text File  |  1990-02-02  |  9.7 KB  |  217 lines  |  [TEXT/GEOL]

  1. Item    0951606                         2-Feb-90        01:06PST
  2.  
  3. From:   MID                             France, Dev, MID,IDV
  4.  
  5. To:     CPLUS.APPLE$                    C++ Interest List--Apple Employees
  6.         CPLUS.DEV$                      C++ Interest List--Developers
  7.  
  8. Sub:    Code generation (long)
  9.  
  10. Hi C++ friend's,
  11.  
  12. I have serious problem with the code generation using MPW C++ 3.1b1. And I hope
  13. very very hard that final release will resolve this. Today, with such code
  14. quality, my project is vain.
  15.  
  16. Here is a sample :
  17.  
  18. TSCGlobal::TSCGlobal(OSErr& result,
  19.     long creatorID, short creatorIDType,
  20.     SCSIRequestProc itsRequestProc,
  21.     Ptr macDisk, long macDiskSize)
  22. {
  23.    IVersionObject(creatorID, creatorIDType, kSCDriveVers);
  24.    fRequestProc = itsRequestProc;
  25.  
  26.    fAnchor.anchUser = kUnitMgrSig;
  27.    fAnchor.anchData = (long)this;
  28.    if ((result = InsAnchor(&fAnchor)) == noErr) {
  29.    TDiskDef* diskDef = (TDiskDef*)NewPtr(sizeof(TDiskDef) - 4096 + macDiskSize)
  30.    if (diskDef) {
  31.    DiskDefParam defParam;
  32.  
  33.    Debugger();
  34.    BlockMove(macDisk, (Ptr)diskDef->GetDiskDefProc(), macDiskSize);
  35.    defParam.fMessage = dsksOpen;
  36.    if ((result = diskDef->SendMessage(&defParam)) == noErr) {
  37.    diskDef->SetStorage(defParam.fStorage);
  38.    fDiskDef.Insert(diskDef);
  39.    }
  40.    else
  41.    delete diskDef;
  42.    }
  43.    else
  44.    result = memFullErr;
  45.    }
  46.    if (result) {
  47.    delete this;
  48.    return;
  49.    }
  50.  
  51. }
  52.  
  53. And here is the corresponding code :
  54.  
  55. 00000000: 4E56 FFF4      'NV..'            LINK       A6,#$FFF4
  56. 00000004: 48E7 0118      'H...'            MOVEM.L    D7/A3/A4,-(A7)
  57. 00000008: 2E2E 0020      '... '            MOVE.L     $0020(A6),D7
  58. 0000000C: 266E 0008      '&n..'            MOVEA.L    $0008(A6),A3
  59. 00000010: 200B           ' .'              MOVE.L     A3,D0
  60. 00000012: 6612           'f.'              BNE.S      *+$0014             ;
  61. 00000026
  62. 00000014: 598F           'Y.'              SUBQ.L     #$4,A7
  63. 00000016: 7022           'p"'              MOVEQ      #$22,D0             ;
  64. 00000018: 2F00           '/.'              MOVE.L     D0,-(A7)
  65. 0000001A: 4EBA 0000      'N...'            JSR        NEWPTR              ;
  66. 0000001E: 265F           '&_'              MOVEA.L    (A7)+,A3
  67. 00000020: 200B           ' .'              MOVE.L     A3,D0
  68. 00000022: 6700 0110      'g...'            BEQ        *+$0112             ;
  69. 00000134
  70. 00000026: 7000           'p.'              MOVEQ      #$00,D0
  71. 00000028: 2740 001A      ''@..'            MOVE.L     D0,$001A(A3)
  72. 0000002C: 41EB 001A      'A...'            LEA        $001A(A3),A0
  73. 00000030: 2740 001E      ''@..'            MOVE.L     D0,$001E(A3)
  74. 00000034: 41EB 001E      'A...'            LEA        $001E(A3),A0
  75. 00000038: 7201           'r.'              MOVEQ      #$01,D1
  76. 0000003A: 2F01           '/.'              MOVE.L     D1,-(A7)
  77. 0000003C: 342E 0016      '4...'            MOVE.W     $0016(A6),D2
  78. 00000040: 48C2           'H.'              EXT.L      D2
  79. 00000042: 2F02           '/.'              MOVE.L     D2,-(A7)
  80. 00000044: 2F2E 0010      '/...'            MOVE.L     $0010(A6),-(A7)
  81. 00000048: 2F0B           '/.'              MOVE.L     A3,-(A7)
  82. 0000004A: 4EBA 0000      'N...'            JSR
  83. IVersionObject__13VersionObjectFlsT2 ; id: 10
  84. 0000004E: 276E 0018 0016 ''n....'          MOVE.L     $0018(A6),$0016(A3)
  85. 00000054: 277C 7363 6472 ''|scdr'          MOVE.L     #$73636472,$000E(A3) ;
  86. 'scdr'
  87.              000E
  88. 0000005C: 274B 0012      ''K..'            MOVE.L     A3,$0012(A3)
  89. 00000060: 486B 000A      'Hk..'            PEA        $000A(A3)
  90. 00000064: 4EBA 0000      'N...'            JSR        InsAnchor__FP9anchorRec ;
  91. id: 18
  92. 00000068: 206E 000C      ' n..'            MOVEA.L    $000C(A6),A0
  93. 0000006C: 3080           '0.'              MOVE.W     D0,(A0)
  94. 0000006E: 48C0           'H.'              EXT.L      D0
  95. 00000070: 4FEF 0014      'O...'            LEA        $0014(A7),A7
  96. 00000074: 6600 0098      'f...'            BNE        *+$009A             ;
  97. 0000010E
  98. 00000078: 598F           'Y.'              SUBQ.L     #$4,A7
  99. 0000007A: 2007           ' .'              MOVE.L     D7,D0
  100. 0000007C: 720A           'r.'              MOVEQ      #$0A,D1
  101. 0000007E: D081           '..'              ADD.L      D1,D0
  102. 00000080: 2F00           '/.'              MOVE.L     D0,-(A7)
  103. 00000082: 4EBA 0000      'N...'            JSR        NEWPTR              ;
  104. 00000086: 285F           '(_'              MOVEA.L    (A7)+,A4
  105. 00000088: 200C           ' .'              MOVE.L     A4,D0
  106. 0000008A: 677A           'gz'              BEQ.S      *+$007C             ;
  107. 00000106
  108. 0000008C: A9FF           '..'              _Debugger                      ;
  109. 0000008E: 2F2E 001C      '/...'            MOVE.L     $001C(A6),-(A7)
  110. 00000092: 486C 000A      'Hl..'            PEA        $000A(A4)
  111. 00000096: 2F07           '/.'              MOVE.L     D7,-(A7)
  112. 00000098: 4EBA 0000      'N...'            JSR        BLOCKMOVE           ;
  113. 0000009C: 422E FFF6      'B...'            CLR.B      -$000A(A6)
  114. 000000A0: 486E FFF4      'Hn..'            PEA        -$000C(A6)
  115. 000000A4: 2F0C           '/.'              MOVE.L     A4,-(A7)
  116. 000000A6: 4EBA 0000      'N...'            JSR
  117. SendMessage__8TDiskDefFP12DiskDefParam ; id: 1
  118. 000000AA: 206E 000C      ' n..'            MOVEA.L    $000C(A6),A0
  119. 000000AE: 3080           '0.'              MOVE.W     D0,(A0)
  120. 000000B0: 48C0           'H.'              EXT.L      D0
  121. 000000B2: 508F           'P.'              ADDQ.L     #$8,A7
  122. 000000B4: 6620           'f '              BNE.S      *+$0022             ;
  123. 000000D6
  124. 000000B6: 296E FFFC 0006 ')n....'          MOVE.L     -$0004(A6),$0006(A4)
  125. 000000BC: 200C           ' .'              MOVE.L     A4,D0
  126. 000000BE: 6706           'g.'              BEQ.S      *+$0008             ;
  127. 000000C6
  128. 000000C0: 200C           ' .'              MOVE.L     A4,D0
  129. 000000C2: 5480           'T.'              ADDQ.L     #$2,D0
  130. 000000C4: 6002           '`.'              BRA.S      *+$0004             ;
  131. 000000C8
  132. 000000C6: 7000           'p.'              MOVEQ      #$00,D0
  133. 000000C8: 2F00           '/.'              MOVE.L     D0,-(A7)
  134. 000000CA: 486B 001E      'Hk..'            PEA        $001E(A3)
  135. 000000CE: 4EBA 0000      'N...'            JSR
  136. Insert__10LinkedListFP12LinkedObject ; id: 9
  137. 000000D2: 508F           'P.'              ADDQ.L     #$8,A7
  138. 000000D4: 6038           '`8'              BRA.S      *+$003A             ;
  139. 0000010E
  140.  
  141. ; Here there is a serious problem with code generation.
  142. ; Following code is correct but totally unefficient !!!
  143.  
  144. 000000D6: 200C           ' .'              MOVE.L     A4,D0
  145. 000000D8: 6728           'g('              BEQ.S      *+$002A             ;
  146. 00000102
  147. 000000DA: 200C           ' .'              MOVE.L     A4,D0
  148. 000000DC: 671E           'g.'              BEQ.S      *+$0020             ;
  149. 000000FC
  150. 000000DE: 200C           ' .'              MOVE.L     A4,D0
  151. 000000E0: 670E           'g.'              BEQ.S      *+$0010             ;
  152. 000000F0
  153. 000000E2: 200C           ' .'              MOVE.L     A4,D0
  154. 000000E4: 6704           'g.'              BEQ.S      *+$0006             ;
  155. 000000EA
  156.  
  157. ; Problem again !
  158.  
  159. 000000E6: 7000           'p.'              MOVEQ      #$00,D0
  160. 000000E8: 6002           '`.'              BRA.S      *+$0004             ;
  161. 000000EC
  162. 000000EA: 7000           'p.'              MOVEQ      #$00,D0
  163. 000000EC: 7000           'p.'              MOVEQ      #$00,D0
  164. 000000EE: 6002           '`.'              BRA.S      *+$0004             ;
  165. 000000F2
  166. 000000F0: 7000           'p.'              MOVEQ      #$00,D0
  167. 000000F2: 2F0C           '/.'              MOVE.L     A4,-(A7)
  168. 000000F4: 4EBA 0000      'N...'            JSR        DISPOSPTR           ;
  169. 000000F8: 7000           'p.'              MOVEQ      #$00,D0
  170. 000000FA: 6002           '`.'              BRA.S      *+$0004             ;
  171. 000000FE
  172. 000000FC: 7000           'p.'              MOVEQ      #$00,D0
  173. 000000FE: 7000           'p.'              MOVEQ      #$00,D0
  174. 00000100: 600C           '`.'              BRA.S      *+$000E             ;
  175. 0000010E
  176. 00000102: 7000           'p.'              MOVEQ      #$00,D0
  177. 00000104: 6008           '`.'              BRA.S      *+$000A             ;
  178. 0000010E
  179. 00000106: 206E 000C      ' n..'            MOVEA.L    $000C(A6),A0
  180. 0000010A: 30BC FF94      '0...'            MOVE.W     #$FF94,(A0)
  181. 0000010E: 206E 000C      ' n..'            MOVEA.L    $000C(A6),A0
  182. 00000112: 4A50           'JP'              TST.W      (A0)
  183. 00000114: 671E           'g.'              BEQ.S      *+$0020             ;
  184. 00000134
  185. 00000116: 200B           ' .'              MOVE.L     A3,D0
  186. 00000118: 6714           'g.'              BEQ.S      *+$0016             ;
  187. 0000012E
  188. 0000011A: 200B           ' .'              MOVE.L     A3,D0
  189. 0000011C: 670A           'g.'              BEQ.S      *+$000C             ;
  190. 00000128
  191. 0000011E: 2F0B           '/.'              MOVE.L     A3,-(A7)
  192. 00000120: 4EBA 0000      'N...'            JSR        DISPOSPTR           ;
  193.  
  194. ; Always the same problem !
  195.  
  196. 00000124: 7000           'p.'              MOVEQ      #$00,D0
  197. 00000126: 6002           '`.'              BRA.S      *+$0004             ;
  198. 0000012A
  199. 00000128: 7000           'p.'              MOVEQ      #$00,D0
  200. 0000012A: 7000           'p.'              MOVEQ      #$00,D0
  201. 0000012C: 6002           '`.'              BRA.S      *+$0004             ;
  202. 00000130
  203. 0000012E: 7000           'p.'              MOVEQ      #$00,D0
  204. 00000130: 200B           ' .'              MOVE.L     A3,D0
  205. 00000132: 6002           '`.'              BRA.S      *+$0004             ;
  206. 00000136
  207. 00000134: 200B           ' .'              MOVE.L     A3,D0
  208. 00000136: 4CEE 1880 FFE8 'L.....'          MOVEM.L    -$0018(A6),D7/A3/A4
  209. 0000013C: 4E5E           'N^'              UNLK       A6
  210. 0000013E: 4E75           'Nu'              RTS
  211.  
  212. What is the "right C++ writing style" for an efficient code ? I think that my
  213. C++ speaking is as bad as my English speaking !!!
  214.  
  215. Etienne Vautherin
  216.  
  217.